package com.hsylient.kafka.service;

import cn.hutool.core.thread.ThreadUtil;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.util.concurrent.ExecutorService;

@Slf4j
@Service
public class ThreadPoolService {


    @Resource
    private ExecutorService executorService;


    /**
     * 使用了固定大小的线程池
     * 当我们发起http请求的时候，很快就响应请求成功了。但是日志其实还是没有打印的，等到sleep的时间到了，才会打印日志。
     * 这说明多个任务的执行与我们的请求是分开的，没有挤在一起，异步执行，节省了请求响应的时间。
     */
    public void fixedThreadPool() {
        for (int i = 0; i < 10; i++) {
            int finalI = i;
            executorService.submit(() -> {
                ThreadUtil.sleep(5000);
                log.info("[测试固定大小的线程池] 当前任务数 {}", finalI);
            });
        }
    }
}
